package com.shlh.saas.service;

import com.shlh.saas.common.Result;
import com.shlh.saas.model.dto.LoginDTO;
import com.shlh.saas.model.dto.RegisterDTO;
import com.shlh.saas.model.dto.SmsLoginDTO;
import com.shlh.saas.model.vo.LoginVO;

/**
 * 认证服务接口
 */
public interface AuthService {

    /**
     * 验证短信验证码是否正确
     *
     * @param phone 手机号
     * @param code 验证码
     * @return 验证结果
     */
    boolean verifySmsCode(String phone, String code);


    /**
     * 设置密码（已登录用户）
     *
     * @param password 密码
     */
    void setPassword(String password);

    /**
     * 注册
     *
     * @param registerDTO 注册信息
     */
    void register(RegisterDTO registerDTO);

    /**
     * 密码登录
     *
     * @param loginDTO 登录信息
     * @return 登录结果
     */
    LoginVO login(LoginDTO loginDTO);

    /**
     * 短信验证码登录
     *
     * @param smsLoginDTO 短信登录信息
     * @return 登录结果
     */
    LoginVO smsLogin(SmsLoginDTO smsLoginDTO);

    /**
     * 发送短信验证码
     *
     * @param mobile 手机号
     * @return 验证码（仅开发环境返回）
     */
    String sendSmsCode(String mobile);

    /**
     * 退出登录
     */
    void logout();
    
    /**
     * 更新用户密码
     * @param userId 用户ID
     * @param currentPassword 当前密码
     * @param newPassword 新密码
     * @return 更新是否成功
     */
    boolean updatePassword(Long userId, String currentPassword, String newPassword);

    /**
     * 简化版更新用户密码（不验证当前密码）
     * @param userId 用户ID
     * @param newPassword 新密码
     * @return 更新是否成功
     */
    boolean updatePasswordSimple(Long userId, String newPassword);

    /**
     * 直接重置用户密码（不验证当前密码）
     * @param password 新密码
     * @param username 用户名（可选）
     * @param phone 手机号（可选）
     * @return 更新是否成功
     */
    boolean resetPassword(String password, String username, String phone);

    /**
     * 刷新token
     * @return 新的令牌
     */
    String refreshToken();
} 